package wsz.test;

import org.apache.dubbo.common.URL;
import org.apache.dubbo.common.extension.ExtensionLoader;
import wsz.service.HelloService;

/**
 * TODO：通过url获取扩展点
 *
 * @author wsz
 * @desc：
 * @date 2021/12/13
 */
public class DubboAdaptiveMain {

    /**
     * 核心为：hellow.service，dubbo自动转换HelloService
     * @param args
     */
    public static void main(String[] args) {
        /**
         * HelloService使用@SPI("human")
         * 调用sayHello(URL)方法时，如果url中的没有参数，则调用human指向的实现类的方法
         *              如果url中指定了参数human/dog，则调用对应参数指向的实现类的方法
         *  给调用方提供动态的多个实现类的方法
         */
//        URL url  = URL.valueOf("test://localhost/hello?hello.service=dog");
        URL url  = URL.valueOf("test://localhost/hello?hello.service=human");
        HelloService adaptiveExtension = ExtensionLoader.getExtensionLoader(HelloService.class).getAdaptiveExtension();
        String msg = adaptiveExtension.sayHello(url);
        System.out.println(msg);
    }
}
